<?php

Class SeguroDAO{
    
    public function cadastrarSeguro(Seguro $seguro){
     
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                INSERT INTO seguro (id, id_seguradora, id_produtor, id_segurado, 
                id_veiculo, tipo, data_inicio, data_fim, tipo_cobertura, franquia, 
                premio_liquido, premio_produtor, comissao_corretora, comissao_produtor, comissao_cactus,
                qtde_parcelas, juros, desconto, status, numero_apolice, codigo_identidade, 
                data_cadastro, seguradora_anterior, cobertura_anterior, bonus_anterior, 
                possui_sinistro, qtde_sinistro, data_inicio_anterior, data_fim_anterior, 
                detem_apolice_anterior) 
                VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
                ?, '0', '0', '0', '0', '0', NULL, NULL, '0');
            ";
            
            //converter datas
            $data = new Utilitarios();
            $dataInicioVigencia = $data->ConverteDataBanco($seguro->getDataInicio());
            $dataFimVigencia = $data->ConverteDataBanco($seguro->getDataFim());
            //$dataCadastro = $data->ConverteDataBanco($seguro->getDataCadastro());

            //Cadastro
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($seguro->getCodigoSeguradora()));
            $stmt->bindValue(2, utf8_decode($seguro->getCodigoProdutor()));
            $stmt->bindValue(3, utf8_decode($seguro->getCodigoSegurado()));
            $stmt->bindValue(4, utf8_decode($seguro->getCodigoVeiculo()));
            $stmt->bindValue(5, utf8_decode("NOVO"));
            $stmt->bindValue(6, $dataInicioVigencia);
            $stmt->bindValue(7, $dataFimVigencia);
            $stmt->bindValue(8, utf8_decode($seguro->getTipoCobertura()));
            $stmt->bindValue(9, utf8_decode($seguro->getFranquia()));
            $stmt->bindValue(10, utf8_decode($seguro->getPremioLiquido()));
            $stmt->bindValue(11, utf8_decode($seguro->getPremioProdutor()));
            $stmt->bindValue(12, utf8_decode($seguro->getComissaoCorretora()));
            $stmt->bindValue(13, utf8_decode($seguro->getComissaoProdutor()));
            $stmt->bindValue(14, utf8_decode($seguro->getComissaoCactus()));
            $stmt->bindValue(15, utf8_decode($seguro->getQuantidadeParcelas()));
            $stmt->bindValue(16, utf8_decode($seguro->getJuros()));
            $stmt->bindValue(17, utf8_decode($seguro->getDesconto()));
            $stmt->bindValue(18, utf8_decode($seguro->getStatus()));
            $stmt->bindValue(19, utf8_decode($seguro->getNumeroApolice()));
            $stmt->bindValue(20, utf8_decode($seguro->getCodigoIdentidade()));
            $stmt->bindValue(21, date("Y-m-d"));
            $stmt->execute();

            $conn = $conexao->fecharConexao();
            return true;
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
            
    }
    
    
    public function listarSeguro() {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("SELECT * FROM seguro ORDER BY data_cadastro DESC;");

            $seguro = array();
            $count = 0;

            foreach ($result as $value) {
                //Recupera valores dos seguros
                $seguro[$count] = new Seguro();
                $seguro[$count]->setIdSeguro($value['id']);
                $seguro[$count]->setCodigoSeguradora($value['id_seguradora']);
                $seguro[$count]->setCodigoProdutor($value['id_produtor']);
                $seguro[$count]->setCodigoSegurado($value['id_segurado']);
                $seguro[$count]->setCodigoVeiculo($value['id_veiculo']);
                $seguro[$count]->setDataInicio($value['data_inicio']);
                $seguro[$count]->setDataFim($value['data_fim']);
                $seguro[$count]->setNumeroApolice($value['numero_apolice']);
                $seguro[$count]->setStatus($value['status']);
                $count++;
            }

            $conn = $conexao->fecharConexao();
            return $seguro;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
    public function selecionarSeguro($idSeguro) {

        try {
            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM seguro 
                WHERE `shadow` = 0 AND id = " . $idSeguro . " 
            ");
            //SELECT *  FROM `seguradora` WHERE `id` = 1 AND `shadow` = 0

            $num = count($result);
            if ($num == 0) {
                
                $seguro = false;
                
            } else {
                
                $seguro = new Seguro();                
                
                foreach ($result as $value) {
                    
                    //converter datas
                    $data = new Utilitarios();
                    $dataInicioVigencia = $data->ConverteDataBrasil($value['data_inicio']);
                    $dataFimVigencia = $data->ConverteDataBrasil($value['data_fim']);
                    
                    $seguro->setIdSeguro($value['id']);
                    $seguro->setCodigoSeguradora($value['id_seguradora']);
                    $seguro->setCodigoProdutor($value['id_produtor']);
                    $seguro->setCodigoSegurado($value['id_segurado']);
                    $seguro->setCodigoVeiculo($value['id_veiculo']);
                    $seguro->setDataInicio($dataInicioVigencia);
                    $seguro->setDataFim($dataFimVigencia);
                    $seguro->setTipoCobertura($value['tipo_cobertura']);
                    $seguro->setFranquia($value['franquia']);
                    $seguro->setPremioLiquido($value['premio_liquido']);
                    $seguro->setPremioProdutor($value['premio_produtor']);
                    
                    $seguro->setComissaoCorretora($value['comissao_corretora']);
                    $seguro->setComissaoProdutor($value['comissao_produtor']);
                    $seguro->setComissaoCactus($value['comissao_cactus']);
                    
                    $seguro->setQuantidadeParcelas($value['qtde_parcelas']);
                    $seguro->setJuros($value['juros']);
                    $seguro->setDesconto($value['desconto']);
                    $seguro->setStatus($value['status']);
                    $seguro->setNumeroApolice($value['numero_apolice']);
                    $seguro->setCodigoIdentidade($value['codigo_identidade']);
                }
            }

            $conn = $conexao->fecharConexao();
            return $seguro;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }
    
    public function editarSeguro(Seguro $seguro){
     
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                UPDATE seguro SET id_seguradora = ?, id_produtor = ?, data_inicio = ?, data_fim = ?, 
                tipo_cobertura = ?, franquia = ?, premio_liquido = ?, premio_produtor = ?,
                comissao_corretora = ?, comissao_produtor = ?, comissao_cactus = ?, qtde_parcelas = ?, 
                juros = ?, desconto = ?, status = ?, numero_apolice = ?, codigo_identidade = ?, 
                data_cadastro = ? WHERE id = ?;
            ";
            
            //converter datas
            $data = new Utilitarios();
            $dataInicioVigencia = $data->ConverteDataBanco($seguro->getDataInicio());
            $dataFimVigencia = $data->ConverteDataBanco($seguro->getDataFim());
            $dataCadastro = $data->ConverteDataBanco($seguro->getDataCadastro());
            //$dataCadastro = $data->ConverteDataBanco($seguro->getDataCadastro());

            //Editar
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($seguro->getCodigoSeguradora()));
            $stmt->bindValue(2, utf8_decode($seguro->getCodigoProdutor()));          
            $stmt->bindValue(3, $dataInicioVigencia);
            $stmt->bindValue(4, $dataFimVigencia);
            $stmt->bindValue(5, utf8_decode($seguro->getTipoCobertura()));
            $stmt->bindValue(6, utf8_decode($seguro->getFranquia()));
            $stmt->bindValue(7, utf8_decode($seguro->getPremioLiquido()));
            $stmt->bindValue(8, utf8_decode($seguro->getPremioProdutor()));            
            $stmt->bindValue(9, utf8_decode($seguro->getComissaoCorretora()));
            $stmt->bindValue(10, utf8_decode($seguro->getComissaoProdutor()));
            $stmt->bindValue(11, utf8_decode($seguro->getComissaoCactus()));            
            $stmt->bindValue(12, utf8_decode($seguro->getQuantidadeParcelas()));
            $stmt->bindValue(13, utf8_decode($seguro->getJuros()));
            $stmt->bindValue(14, utf8_decode($seguro->getDesconto()));
            $stmt->bindValue(15, utf8_decode($seguro->getStatus()));
            $stmt->bindValue(16, utf8_decode($seguro->getNumeroApolice()));
            $stmt->bindValue(17, utf8_decode($seguro->getCodigoIdentidade()));
            $stmt->bindValue(18, utf8_decode($seguro->getDataCadastro()));
            $stmt->bindValue(19, $seguro->getIdSeguro());
            $stmt->execute();

            $conn = $conexao->fecharConexao();
            return true;
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }            
    }
    
}

?>
